home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / libxml2 / libxml / xpathInternals.h < prev    next >
C/C++ Source or Header  |  2006-04-25  |  19KB  |  631 lines

  1. /*
  2.  * Summary: internal interfaces for XML Path Language implementation
  3.  * Description: internal interfaces for XML Path Language implementation
  4.  *              used to build new modules on top of XPath like XPointer and
  5.  *              XSLT
  6.  *
  7.  * Copy: See Copyright for the status of this software.
  8.  *
  9.  * Author: Daniel Veillard
  10.  */
  11.  
  12. #ifndef __XML_XPATH_INTERNALS_H__
  13. #define __XML_XPATH_INTERNALS_H__
  14.  
  15. #include <libxml/xmlversion.h>
  16. #include <libxml/xpath.h>
  17.  
  18. #ifdef LIBXML_XPATH_ENABLED
  19.  
  20. #ifdef __cplusplus
  21. extern "C" {
  22. #endif
  23.  
  24. /************************************************************************
  25.  *                                    *
  26.  *            Helpers                        *
  27.  *                                    *
  28.  ************************************************************************/
  29.  
  30. /*
  31.  * Many of these macros may later turn into functions. They
  32.  * shouldn't be used in #ifdef's preprocessor instructions.
  33.  */
  34. /**
  35.  * xmlXPathSetError:
  36.  * @ctxt:  an XPath parser context
  37.  * @err:  an xmlXPathError code
  38.  *
  39.  * Raises an error.
  40.  */
  41. #define xmlXPathSetError(ctxt, err)                    \
  42.     { xmlXPatherror((ctxt), __FILE__, __LINE__, (err));            \
  43.       if ((ctxt) != NULL) (ctxt)->error = (err); }
  44.  
  45. /**
  46.  * xmlXPathSetArityError:
  47.  * @ctxt:  an XPath parser context
  48.  *
  49.  * Raises an XPATH_INVALID_ARITY error.
  50.  */
  51. #define xmlXPathSetArityError(ctxt)                    \
  52.     xmlXPathSetError((ctxt), XPATH_INVALID_ARITY)
  53.  
  54. /**
  55.  * xmlXPathSetTypeError:
  56.  * @ctxt:  an XPath parser context
  57.  *
  58.  * Raises an XPATH_INVALID_TYPE error.
  59.  */
  60. #define xmlXPathSetTypeError(ctxt)                    \
  61.     xmlXPathSetError((ctxt), XPATH_INVALID_TYPE)
  62.  
  63. /**
  64.  * xmlXPathGetError:
  65.  * @ctxt:  an XPath parser context
  66.  *
  67.  * Get the error code of an XPath context.
  68.  *
  69.  * Returns the context error.
  70.  */
  71. #define xmlXPathGetError(ctxt)      ((ctxt)->error)
  72.  
  73. /**
  74.  * xmlXPathCheckError:
  75.  * @ctxt:  an XPath parser context
  76.  *
  77.  * Check if an XPath error was raised.
  78.  *
  79.  * Returns true if an error has been raised, false otherwise.
  80.  */
  81. #define xmlXPathCheckError(ctxt)  ((ctxt)->error != XPATH_EXPRESSION_OK)
  82.  
  83. /**
  84.  * xmlXPathGetDocument:
  85.  * @ctxt:  an XPath parser context
  86.  *
  87.  * Get the document of an XPath context.
  88.  *
  89.  * Returns the context document.
  90.  */
  91. #define xmlXPathGetDocument(ctxt)    ((ctxt)->context->doc)
  92.  
  93. /**
  94.  * xmlXPathGetContextNode:
  95.  * @ctxt: an XPath parser context
  96.  *
  97.  * Get the context node of an XPath context.
  98.  *
  99.  * Returns the context node.
  100.  */
  101. #define xmlXPathGetContextNode(ctxt)    ((ctxt)->context->node)
  102.  
  103. XMLPUBFUN int XMLCALL        
  104.         xmlXPathPopBoolean    (xmlXPathParserContextPtr ctxt);
  105. XMLPUBFUN double XMLCALL        
  106.             xmlXPathPopNumber    (xmlXPathParserContextPtr ctxt);
  107. XMLPUBFUN xmlChar * XMLCALL    
  108.             xmlXPathPopString    (xmlXPathParserContextPtr ctxt);
  109. XMLPUBFUN xmlNodeSetPtr XMLCALL    
  110.             xmlXPathPopNodeSet    (xmlXPathParserContextPtr ctxt);
  111. XMLPUBFUN void * XMLCALL        
  112.             xmlXPathPopExternal    (xmlXPathParserContextPtr ctxt);
  113.  
  114. /**
  115.  * xmlXPathReturnBoolean:
  116.  * @ctxt:  an XPath parser context
  117.  * @val:  a boolean
  118.  *
  119.  * Pushes the boolean @val on the context stack.
  120.  */
  121. #define xmlXPathReturnBoolean(ctxt, val)                \
  122.     valuePush((ctxt), xmlXPathNewBoolean(val))
  123.  
  124. /**
  125.  * xmlXPathReturnTrue:
  126.  * @ctxt:  an XPath parser context
  127.  *
  128.  * Pushes true on the context stack.
  129.  */
  130. #define xmlXPathReturnTrue(ctxt)   xmlXPathReturnBoolean((ctxt), 1)
  131.  
  132. /**
  133.  * xmlXPathReturnFalse:
  134.  * @ctxt:  an XPath parser context
  135.  *
  136.  * Pushes false on the context stack.
  137.  */
  138. #define xmlXPathReturnFalse(ctxt)  xmlXPathReturnBoolean((ctxt), 0)
  139.  
  140. /**
  141.  * xmlXPathReturnNumber:
  142.  * @ctxt:  an XPath parser context
  143.  * @val:  a double
  144.  *
  145.  * Pushes the double @val on the context stack.
  146.  */
  147. #define xmlXPathReturnNumber(ctxt, val)                    \
  148.     valuePush((ctxt), xmlXPathNewFloat(val))
  149.  
  150. /**
  151.  * xmlXPathReturnString:
  152.  * @ctxt:  an XPath parser context
  153.  * @str:  a string
  154.  *
  155.  * Pushes the string @str on the context stack.
  156.  */
  157. #define xmlXPathReturnString(ctxt, str)                    \
  158.     valuePush((ctxt), xmlXPathWrapString(str))
  159.  
  160. /**
  161.  * xmlXPathReturnEmptyString:
  162.  * @ctxt:  an XPath parser context
  163.  *
  164.  * Pushes an empty string on the stack.
  165.  */
  166. #define xmlXPathReturnEmptyString(ctxt)                    \
  167.     valuePush((ctxt), xmlXPathNewCString(""))
  168.  
  169. /**
  170.  * xmlXPathReturnNodeSet:
  171.  * @ctxt:  an XPath parser context
  172.  * @ns:  a node-set
  173.  *
  174.  * Pushes the node-set @ns on the context stack.
  175.  */
  176. #define xmlXPathReturnNodeSet(ctxt, ns)                    \
  177.     valuePush((ctxt), xmlXPathWrapNodeSet(ns))
  178.  
  179. /**
  180.  * xmlXPathReturnEmptyNodeSet:
  181.  * @ctxt:  an XPath parser context
  182.  *
  183.  * Pushes an empty node-set on the context stack.
  184.  */
  185. #define xmlXPathReturnEmptyNodeSet(ctxt)                \
  186.     valuePush((ctxt), xmlXPathNewNodeSet(NULL))
  187.  
  188. /**
  189.  * xmlXPathReturnExternal:
  190.  * @ctxt:  an XPath parser context
  191.  * @val:  user data
  192.  *
  193.  * Pushes user data on the context stack.
  194.  */
  195. #define xmlXPathReturnExternal(ctxt, val)                \
  196.     valuePush((ctxt), xmlXPathWrapExternal(val))
  197.  
  198. /**
  199.  * xmlXPathStackIsNodeSet:
  200.  * @ctxt: an XPath parser context
  201.  *
  202.  * Check if the current value on the XPath stack is a node set or
  203.  * an XSLT value tree.
  204.  *
  205.  * Returns true if the current object on the stack is a node-set.
  206.  */
  207. #define xmlXPathStackIsNodeSet(ctxt)                    \
  208.     (((ctxt)->value != NULL)                        \
  209.      && (((ctxt)->value->type == XPATH_NODESET)                \
  210.          || ((ctxt)->value->type == XPATH_XSLT_TREE)))
  211.  
  212. /**
  213.  * xmlXPathStackIsExternal:
  214.  * @ctxt: an XPath parser context
  215.  *
  216.  * Checks if the current value on the XPath stack is an external
  217.  * object.
  218.  *
  219.  * Returns true if the current object on the stack is an external
  220.  * object.
  221.  */
  222. #define xmlXPathStackIsExternal(ctxt)                    \
  223.     ((ctxt->value != NULL) && (ctxt->value->type == XPATH_USERS))
  224.  
  225. /**
  226.  * xmlXPathEmptyNodeSet:
  227.  * @ns:  a node-set
  228.  *
  229.  * Empties a node-set.
  230.  */
  231. #define xmlXPathEmptyNodeSet(ns)                    \
  232.     { while ((ns)->nodeNr > 0) (ns)->nodeTab[(ns)->nodeNr--] = NULL; }
  233.  
  234. /**
  235.  * CHECK_ERROR:
  236.  *
  237.  * Macro to return from the function if an XPath error was detected.
  238.  */
  239. #define CHECK_ERROR                            \
  240.     if (ctxt->error != XPATH_EXPRESSION_OK) return
  241.  
  242. /**
  243.  * CHECK_ERROR0:
  244.  *
  245.  * Macro to return 0 from the function if an XPath error was detected.
  246.  */
  247. #define CHECK_ERROR0                            \
  248.     if (ctxt->error != XPATH_EXPRESSION_OK) return(0)
  249.  
  250. /**
  251.  * XP_ERROR:
  252.  * @X:  the error code
  253.  *
  254.  * Macro to raise an XPath error and return.
  255.  */
  256. #define XP_ERROR(X)                            \
  257.     { xmlXPathErr(ctxt, X); return; }
  258.  
  259. /**
  260.  * XP_ERROR0:
  261.  * @X:  the error code
  262.  *
  263.  * Macro to raise an XPath error and return 0.
  264.  */
  265. #define XP_ERROR0(X)                            \
  266.     { xmlXPathErr(ctxt, X); return(0); }
  267.  
  268. /**
  269.  * CHECK_TYPE:
  270.  * @typeval:  the XPath type
  271.  *
  272.  * Macro to check that the value on top of the XPath stack is of a given
  273.  * type.
  274.  */
  275. #define CHECK_TYPE(typeval)                        \
  276.     if ((ctxt->value == NULL) || (ctxt->value->type != typeval))    \
  277.         XP_ERROR(XPATH_INVALID_TYPE)
  278.  
  279. /**
  280.  * CHECK_TYPE0:
  281.  * @typeval:  the XPath type
  282.  *
  283.  * Macro to check that the value on top of the XPath stack is of a given
  284.  * type. Return(0) in case of failure
  285.  */
  286. #define CHECK_TYPE0(typeval)                        \
  287.     if ((ctxt->value == NULL) || (ctxt->value->type != typeval))    \
  288.         XP_ERROR0(XPATH_INVALID_TYPE)
  289.  
  290. /**
  291.  * CHECK_ARITY:
  292.  * @x:  the number of expected args
  293.  *
  294.  * Macro to check that the number of args passed to an XPath function matches.
  295.  */
  296. #define CHECK_ARITY(x)                            \
  297.     if (ctxt == NULL) return;                        \
  298.     if (nargs != (x))                            \
  299.         XP_ERROR(XPATH_INVALID_ARITY);
  300.  
  301. /**
  302.  * CAST_TO_STRING:
  303.  *
  304.  * Macro to try to cast the value on the top of the XPath stack to a string.
  305.  */
  306. #define CAST_TO_STRING                            \
  307.     if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_STRING))    \
  308.         xmlXPathStringFunction(ctxt, 1);
  309.  
  310. /**
  311.  * CAST_TO_NUMBER:
  312.  *
  313.  * Macro to try to cast the value on the top of the XPath stack to a number.
  314.  */
  315. #define CAST_TO_NUMBER                            \
  316.     if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_NUMBER))    \
  317.         xmlXPathNumberFunction(ctxt, 1);
  318.  
  319. /**
  320.  * CAST_TO_BOOLEAN:
  321.  *
  322.  * Macro to try to cast the value on the top of the XPath stack to a boolean.
  323.  */
  324. #define CAST_TO_BOOLEAN                            \
  325.     if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_BOOLEAN))    \
  326.         xmlXPathBooleanFunction(ctxt, 1);
  327.  
  328. /*
  329.  * Variable Lookup forwarding.
  330.  */
  331.  
  332. XMLPUBFUN void XMLCALL    
  333.     xmlXPathRegisterVariableLookup    (xmlXPathContextPtr ctxt,
  334.                      xmlXPathVariableLookupFunc f,
  335.                      void *data);
  336.  
  337. /*
  338.  * Function Lookup forwarding.
  339.  */
  340.  
  341. XMLPUBFUN void XMLCALL    
  342.         xmlXPathRegisterFuncLookup    (xmlXPathContextPtr ctxt,
  343.                      xmlXPathFuncLookupFunc f,
  344.                      void *funcCtxt);
  345.  
  346. /*
  347.  * Error reporting.
  348.  */
  349. XMLPUBFUN void XMLCALL        
  350.         xmlXPatherror    (xmlXPathParserContextPtr ctxt,
  351.                  const char *file,
  352.                  int line,
  353.                  int no);
  354.  
  355. XMLPUBFUN void XMLCALL
  356.         xmlXPathErr    (xmlXPathParserContextPtr ctxt,
  357.                  int error);
  358.  
  359. #ifdef LIBXML_DEBUG_ENABLED
  360. XMLPUBFUN void XMLCALL        
  361.         xmlXPathDebugDumpObject    (FILE *output,
  362.                      xmlXPathObjectPtr cur,
  363.                      int depth);
  364. XMLPUBFUN void XMLCALL        
  365.         xmlXPathDebugDumpCompExpr(FILE *output,
  366.                      xmlXPathCompExprPtr comp,
  367.                      int depth);
  368. #endif
  369. /**
  370.  * NodeSet handling.
  371.  */
  372. XMLPUBFUN int XMLCALL        
  373.         xmlXPathNodeSetContains        (xmlNodeSetPtr cur,
  374.                          xmlNodePtr val);
  375. XMLPUBFUN xmlNodeSetPtr XMLCALL    
  376.         xmlXPathDifference        (xmlNodeSetPtr nodes1,
  377.                          xmlNodeSetPtr nodes2);
  378. XMLPUBFUN xmlNodeSetPtr XMLCALL    
  379.         xmlXPathIntersection        (xmlNodeSetPtr nodes1,
  380.                          xmlNodeSetPtr nodes2);
  381.  
  382. XMLPUBFUN xmlNodeSetPtr XMLCALL    
  383.         xmlXPathDistinctSorted        (xmlNodeSetPtr nodes);
  384. XMLPUBFUN xmlNodeSetPtr XMLCALL    
  385.         xmlXPathDistinct        (xmlNodeSetPtr nodes);
  386.  
  387. XMLPUBFUN int XMLCALL        
  388.         xmlXPathHasSameNodes        (xmlNodeSetPtr nodes1,
  389.                          xmlNodeSetPtr nodes2);
  390.  
  391. XMLPUBFUN xmlNodeSetPtr XMLCALL    
  392.         xmlXPathNodeLeadingSorted    (xmlNodeSetPtr nodes,
  393.                          xmlNodePtr node);
  394. XMLPUBFUN xmlNodeSetPtr XMLCALL    
  395.         xmlXPathLeadingSorted        (xmlNodeSetPtr nodes1,
  396.                          xmlNodeSetPtr nodes2);
  397. XMLPUBFUN xmlNodeSetPtr XMLCALL    
  398.         xmlXPathNodeLeading        (xmlNodeSetPtr nodes,
  399.                          xmlNodePtr node);
  400. XMLPUBFUN xmlNodeSetPtr XMLCALL    
  401.         xmlXPathLeading            (xmlNodeSetPtr nodes1,
  402.                          xmlNodeSetPtr nodes2);
  403.  
  404. XMLPUBFUN xmlNodeSetPtr XMLCALL    
  405.         xmlXPathNodeTrailingSorted    (xmlNodeSetPtr nodes,
  406.                          xmlNodePtr node);
  407. XMLPUBFUN xmlNodeSetPtr XMLCALL    
  408.         xmlXPathTrailingSorted        (xmlNodeSetPtr nodes1,
  409.                          xmlNodeSetPtr nodes2);
  410. XMLPUBFUN xmlNodeSetPtr XMLCALL    
  411.         xmlXPathNodeTrailing        (xmlNodeSetPtr nodes,
  412.                          xmlNodePtr node);
  413. XMLPUBFUN xmlNodeSetPtr XMLCALL    
  414.         xmlXPathTrailing        (xmlNodeSetPtr nodes1,
  415.                          xmlNodeSetPtr nodes2);
  416.  
  417.  
  418. /**
  419.  * Extending a context.
  420.  */
  421.  
  422. XMLPUBFUN int XMLCALL           
  423.         xmlXPathRegisterNs        (xmlXPathContextPtr ctxt,
  424.                          const xmlChar *prefix,
  425.                          const xmlChar *ns_uri);
  426. XMLPUBFUN const xmlChar * XMLCALL       
  427.         xmlXPathNsLookup        (xmlXPathContextPtr ctxt,
  428.                          const xmlChar *prefix);
  429. XMLPUBFUN void XMLCALL           
  430.         xmlXPathRegisteredNsCleanup    (xmlXPathContextPtr ctxt);
  431.  
  432. XMLPUBFUN int XMLCALL           
  433.         xmlXPathRegisterFunc        (xmlXPathContextPtr ctxt,
  434.                          const xmlChar *name,
  435.                          xmlXPathFunction f);
  436. XMLPUBFUN int XMLCALL           
  437.         xmlXPathRegisterFuncNS        (xmlXPathContextPtr ctxt,
  438.                          const xmlChar *name,
  439.                          const xmlChar *ns_uri,
  440.                          xmlXPathFunction f);
  441. XMLPUBFUN int XMLCALL           
  442.         xmlXPathRegisterVariable    (xmlXPathContextPtr ctxt,
  443.                          const xmlChar *name,
  444.                          xmlXPathObjectPtr value);
  445. XMLPUBFUN int XMLCALL           
  446.         xmlXPathRegisterVariableNS    (xmlXPathContextPtr ctxt,
  447.                          const xmlChar *name,
  448.                          const xmlChar *ns_uri,
  449.                          xmlXPathObjectPtr value);
  450. XMLPUBFUN xmlXPathFunction XMLCALL   
  451.         xmlXPathFunctionLookup        (xmlXPathContextPtr ctxt,
  452.                          const xmlChar *name);
  453. XMLPUBFUN xmlXPathFunction XMLCALL   
  454.         xmlXPathFunctionLookupNS    (xmlXPathContextPtr ctxt,
  455.                          const xmlChar *name,
  456.                          const xmlChar *ns_uri);
  457. XMLPUBFUN void XMLCALL           
  458.         xmlXPathRegisteredFuncsCleanup    (xmlXPathContextPtr ctxt);
  459. XMLPUBFUN xmlXPathObjectPtr XMLCALL  
  460.         xmlXPathVariableLookup        (xmlXPathContextPtr ctxt,
  461.                          const xmlChar *name);
  462. XMLPUBFUN xmlXPathObjectPtr XMLCALL  
  463.         xmlXPathVariableLookupNS    (xmlXPathContextPtr ctxt,
  464.                          const xmlChar *name,
  465.                          const xmlChar *ns_uri);
  466. XMLPUBFUN void XMLCALL           
  467.         xmlXPathRegisteredVariablesCleanup(xmlXPathContextPtr ctxt);
  468.  
  469. /**
  470.  * Utilities to extend XPath.
  471.  */
  472. XMLPUBFUN xmlXPathParserContextPtr XMLCALL
  473.           xmlXPathNewParserContext    (const xmlChar *str,
  474.                            xmlXPathContextPtr ctxt);
  475. XMLPUBFUN void XMLCALL          
  476.         xmlXPathFreeParserContext    (xmlXPathParserContextPtr ctxt);
  477.  
  478. /* TODO: remap to xmlXPathValuePop and Push. */
  479. XMLPUBFUN xmlXPathObjectPtr XMLCALL 
  480.         valuePop            (xmlXPathParserContextPtr ctxt);
  481. XMLPUBFUN int XMLCALL          
  482.         valuePush            (xmlXPathParserContextPtr ctxt,
  483.                           xmlXPathObjectPtr value);
  484.  
  485. XMLPUBFUN xmlXPathObjectPtr XMLCALL 
  486.         xmlXPathNewString        (const xmlChar *val);
  487. XMLPUBFUN xmlXPathObjectPtr XMLCALL 
  488.         xmlXPathNewCString        (const char *val);
  489. XMLPUBFUN xmlXPathObjectPtr XMLCALL 
  490.         xmlXPathWrapString        (xmlChar *val);
  491. XMLPUBFUN xmlXPathObjectPtr XMLCALL 
  492.         xmlXPathWrapCString        (char * val);
  493. XMLPUBFUN xmlXPathObjectPtr XMLCALL 
  494.         xmlXPathNewFloat        (double val);
  495. XMLPUBFUN xmlXPathObjectPtr XMLCALL 
  496.         xmlXPathNewBoolean        (int val);
  497. XMLPUBFUN xmlXPathObjectPtr XMLCALL 
  498.         xmlXPathNewNodeSet        (xmlNodePtr val);
  499. XMLPUBFUN xmlXPathObjectPtr XMLCALL 
  500.         xmlXPathNewValueTree        (xmlNodePtr val);
  501. XMLPUBFUN void XMLCALL          
  502.         xmlXPathNodeSetAdd        (xmlNodeSetPtr cur,
  503.                          xmlNodePtr val);
  504. XMLPUBFUN void XMLCALL              
  505.         xmlXPathNodeSetAddUnique    (xmlNodeSetPtr cur,
  506.                          xmlNodePtr val);
  507. XMLPUBFUN void XMLCALL          
  508.         xmlXPathNodeSetAddNs        (xmlNodeSetPtr cur, 
  509.                          xmlNodePtr node, 
  510.                          xmlNsPtr ns);
  511. XMLPUBFUN void XMLCALL              
  512.         xmlXPathNodeSetSort        (xmlNodeSetPtr set);
  513.  
  514. XMLPUBFUN void XMLCALL          
  515.         xmlXPathRoot            (xmlXPathParserContextPtr ctxt);
  516. XMLPUBFUN void XMLCALL          
  517.         xmlXPathEvalExpr        (xmlXPathParserContextPtr ctxt);
  518. XMLPUBFUN xmlChar * XMLCALL      
  519.         xmlXPathParseName        (xmlXPathParserContextPtr ctxt);
  520. XMLPUBFUN xmlChar * XMLCALL      
  521.         xmlXPathParseNCName        (xmlXPathParserContextPtr ctxt);
  522.  
  523. /*
  524.  * Existing functions.
  525.  */
  526. XMLPUBFUN double XMLCALL 
  527.         xmlXPathStringEvalNumber    (const xmlChar *str);
  528. XMLPUBFUN int XMLCALL 
  529.         xmlXPathEvaluatePredicateResult (xmlXPathParserContextPtr ctxt, 
  530.                          xmlXPathObjectPtr res);
  531. XMLPUBFUN void XMLCALL 
  532.         xmlXPathRegisterAllFunctions    (xmlXPathContextPtr ctxt);
  533. XMLPUBFUN xmlNodeSetPtr XMLCALL 
  534.         xmlXPathNodeSetMerge        (xmlNodeSetPtr val1, 
  535.                          xmlNodeSetPtr val2);
  536. XMLPUBFUN void XMLCALL 
  537.         xmlXPathNodeSetDel        (xmlNodeSetPtr cur, 
  538.                          xmlNodePtr val);
  539. XMLPUBFUN void XMLCALL 
  540.         xmlXPathNodeSetRemove        (xmlNodeSetPtr cur, 
  541.                          int val);
  542. XMLPUBFUN xmlXPathObjectPtr XMLCALL 
  543.         xmlXPathNewNodeSetList        (xmlNodeSetPtr val);
  544. XMLPUBFUN xmlXPathObjectPtr XMLCALL 
  545.         xmlXPathWrapNodeSet        (xmlNodeSetPtr val);
  546. XMLPUBFUN xmlXPathObjectPtr XMLCALL 
  547.         xmlXPathWrapExternal        (void *val);
  548.  
  549. XMLPUBFUN int XMLCALL xmlXPathEqualValues(xmlXPathParserContextPtr ctxt);
  550. XMLPUBFUN int XMLCALL xmlXPathNotEqualValues(xmlXPathParserContextPtr ctxt);
  551. XMLPUBFUN int XMLCALL xmlXPathCompareValues(xmlXPathParserContextPtr ctxt, int inf, int strict);
  552. XMLPUBFUN void XMLCALL xmlXPathValueFlipSign(xmlXPathParserContextPtr ctxt);
  553. XMLPUBFUN void XMLCALL xmlXPathAddValues(xmlXPathParserContextPtr ctxt);
  554. XMLPUBFUN void XMLCALL xmlXPathSubValues(xmlXPathParserContextPtr ctxt);
  555. XMLPUBFUN void XMLCALL xmlXPathMultValues(xmlXPathParserContextPtr ctxt);
  556. XMLPUBFUN void XMLCALL xmlXPathDivValues(xmlXPathParserContextPtr ctxt);
  557. XMLPUBFUN void XMLCALL xmlXPathModValues(xmlXPathParserContextPtr ctxt);
  558.  
  559. XMLPUBFUN int XMLCALL xmlXPathIsNodeType(const xmlChar *name);
  560.  
  561. /*
  562.  * Some of the axis navigation routines.
  563.  */
  564. XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextSelf(xmlXPathParserContextPtr ctxt,
  565.             xmlNodePtr cur);
  566. XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextChild(xmlXPathParserContextPtr ctxt,
  567.             xmlNodePtr cur);
  568. XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextDescendant(xmlXPathParserContextPtr ctxt,
  569.             xmlNodePtr cur);
  570. XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextDescendantOrSelf(xmlXPathParserContextPtr ctxt,
  571.             xmlNodePtr cur);
  572. XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextParent(xmlXPathParserContextPtr ctxt,
  573.             xmlNodePtr cur);
  574. XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAncestorOrSelf(xmlXPathParserContextPtr ctxt,
  575.             xmlNodePtr cur);
  576. XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextFollowingSibling(xmlXPathParserContextPtr ctxt,
  577.             xmlNodePtr cur);
  578. XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextFollowing(xmlXPathParserContextPtr ctxt,
  579.             xmlNodePtr cur);
  580. XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextNamespace(xmlXPathParserContextPtr ctxt,
  581.             xmlNodePtr cur);
  582. XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAttribute(xmlXPathParserContextPtr ctxt,
  583.             xmlNodePtr cur);
  584. XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextPreceding(xmlXPathParserContextPtr ctxt,
  585.             xmlNodePtr cur);
  586. XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAncestor(xmlXPathParserContextPtr ctxt,
  587.             xmlNodePtr cur);
  588. XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextPrecedingSibling(xmlXPathParserContextPtr ctxt,
  589.             xmlNodePtr cur);
  590. /*
  591.  * The official core of XPath functions.
  592.  */
  593. XMLPUBFUN void XMLCALL xmlXPathLastFunction(xmlXPathParserContextPtr ctxt, int nargs);
  594. XMLPUBFUN void XMLCALL xmlXPathPositionFunction(xmlXPathParserContextPtr ctxt, int nargs);
  595. XMLPUBFUN void XMLCALL xmlXPathCountFunction(xmlXPathParserContextPtr ctxt, int nargs);
  596. XMLPUBFUN void XMLCALL xmlXPathIdFunction(xmlXPathParserContextPtr ctxt, int nargs);
  597. XMLPUBFUN void XMLCALL xmlXPathLocalNameFunction(xmlXPathParserContextPtr ctxt, int nargs);
  598. XMLPUBFUN void XMLCALL xmlXPathNamespaceURIFunction(xmlXPathParserContextPtr ctxt, int nargs);
  599. XMLPUBFUN void XMLCALL xmlXPathStringFunction(xmlXPathParserContextPtr ctxt, int nargs);
  600. XMLPUBFUN void XMLCALL xmlXPathStringLengthFunction(xmlXPathParserContextPtr ctxt, int nargs);
  601. XMLPUBFUN void XMLCALL xmlXPathConcatFunction(xmlXPathParserContextPtr ctxt, int nargs);
  602. XMLPUBFUN void XMLCALL xmlXPathContainsFunction(xmlXPathParserContextPtr ctxt, int nargs);
  603. XMLPUBFUN void XMLCALL xmlXPathStartsWithFunction(xmlXPathParserContextPtr ctxt, int nargs);
  604. XMLPUBFUN void XMLCALL xmlXPathSubstringFunction(xmlXPathParserContextPtr ctxt, int nargs);
  605. XMLPUBFUN void XMLCALL xmlXPathSubstringBeforeFunction(xmlXPathParserContextPtr ctxt, int nargs);
  606. XMLPUBFUN void XMLCALL xmlXPathSubstringAfterFunction(xmlXPathParserContextPtr ctxt, int nargs);
  607. XMLPUBFUN void XMLCALL xmlXPathNormalizeFunction(xmlXPathParserContextPtr ctxt, int nargs);
  608. XMLPUBFUN void XMLCALL xmlXPathTranslateFunction(xmlXPathParserContextPtr ctxt, int nargs);
  609. XMLPUBFUN void XMLCALL xmlXPathNotFunction(xmlXPathParserContextPtr ctxt, int nargs);
  610. XMLPUBFUN void XMLCALL xmlXPathTrueFunction(xmlXPathParserContextPtr ctxt, int nargs);
  611. XMLPUBFUN void XMLCALL xmlXPathFalseFunction(xmlXPathParserContextPtr ctxt, int nargs);
  612. XMLPUBFUN void XMLCALL xmlXPathLangFunction(xmlXPathParserContextPtr ctxt, int nargs);
  613. XMLPUBFUN void XMLCALL xmlXPathNumberFunction(xmlXPathParserContextPtr ctxt, int nargs);
  614. XMLPUBFUN void XMLCALL xmlXPathSumFunction(xmlXPathParserContextPtr ctxt, int nargs);
  615. XMLPUBFUN void XMLCALL xmlXPathFloorFunction(xmlXPathParserContextPtr ctxt, int nargs);
  616. XMLPUBFUN void XMLCALL xmlXPathCeilingFunction(xmlXPathParserContextPtr ctxt, int nargs);
  617. XMLPUBFUN void XMLCALL xmlXPathRoundFunction(xmlXPathParserContextPtr ctxt, int nargs);
  618. XMLPUBFUN void XMLCALL xmlXPathBooleanFunction(xmlXPathParserContextPtr ctxt, int nargs);
  619.  
  620. /**
  621.  * Really internal functions
  622.  */
  623. XMLPUBFUN void XMLCALL xmlXPathNodeSetFreeNs(xmlNsPtr ns);
  624.  
  625. #ifdef __cplusplus
  626. }
  627. #endif
  628.  
  629. #endif /* LIBXML_XPATH_ENABLED */
  630. #endif /* ! __XML_XPATH_INTERNALS_H__ */
  631.